<?php

namespace apiend\modules\passport\models;

use Yii;
use common\logics\DashboardLogic;
use yii\helpers\ArrayHelper;

/**
 * 安全中心面板信息
 *
 * @author emhome <emhome@163.com>
 * @since 1.0
 */
class SecurityAccountModel extends \common\base\Model {

    /**
     * @var array 安全评估
     */
    public $user = null;

    /**
     * 登录密码
     * @return array
     */
    public function getPassword() {
        $isset = $this->user && $this->user->password_hash;
        return [
            'title' => '登录密码',
            'desc' => '安全性高的密码可以使帐号更安全。建议您定期更换密码，设置一个包含字母，符号或数字中至少两项且长度超过6位的密码',
            'unset' => !$isset,
            'emit' => 'dialog',
        ];
    }

    /**
     * 手机绑定
     * @return array
     */
    public function getMobile() {
        $isset = $this->user && $this->user->mobile;
        $desc = '您未绑定手机，请绑定账号手机号。[为了您的账号安全，请绑定手机，可以找回密码，但不能用于登录]';
        if ($isset) {
            $desc = Yii::t('message', '您已绑定了手机 {mobile} [您的手机为安全手机，可以找回密码，但不能用于登录]', [
                'mobile' => $this->user->maskMobile
            ]);
        }
        return [
            'title' => '手机绑定',
            'desc' => $desc,
            'unset' => !$isset,
        ];
    }

    /**
     * 密保问题
     * @return array
     */
    public function getSecretQuestion() {
        return [
            'title' => '密保问题',
            'desc' => '您已经设置 密保问题，可用于找回密码，更有效保障您的密码安全。',
            'unset' => true
        ];
    }

    /**
     * 虚拟MFA
     * @return array
     */
    public function getMfa() {
        return [
            'title' => '虚拟MFA',
            'desc' => '绑定虚拟MFA后，您可以在登录时通过它来进行二次校验。',
            'unset' => true
        ];
    }

    /**
     * 操作保护
     * @return array
     */
    public function getOperationProtection() {
        return [
            'title' => '操作保护',
            'desc' => '你已设置在控制台关键操作（如：释放、修改密码等）时，通过设置保护强度和验证方式再次确认您的身份，进一步提高账号安全性，有效保护您安全使用系统功能',
            'unset' => false
        ];
    }

    /**
     * 登录掩码
     * @return array
     */
    public function getMaskCode() {
        return [
            'title' => '登录掩码',
            'desc' => '网络掩码决定哪些IP地址会受到登录控制台的影响，包括密码登录和SSO登录。如果指定掩码，账号必须只能从指定的IP地址进行登录。如果不指定任何掩码，登录控制台功能将适用于整个网络。当需要配置多个掩码时，请使用分号来分隔掩码，例如：42.120.66.0/24;42.120.74.98',
            'unset' => true
        ];
    }

    /**
     * 登录保持时间
     * @return array
     */
    public function getSessionTime() {
        return [
            'title' => '登录保持时间',
            'desc' => '您可以设置保持登录的时间长度（大于等于1小时，小于等于12小时），超过该时间系统会退出登录，目前的设置为 3 小时（系统默认是3小时）',
            'unset' => false
        ];
    }

    /**
     * @return array
     */
    public function fields() {
        return [
            'password',
            'mobile',
            'secretQuestion',
            'mfa',
            'operationProtection',
            'maskCode',
            'sessionTime',
        ];
    }

}
